﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using DotLink;

namespace JAVALI_Cardapio_Atendimento
{
    public partial class FrmProduto : Form
    {
        public Form Before { get; set; }

        #region Construtor
        public FrmProduto()
        {
            InitializeComponent();
            dtPesquisarProdutos.DataSource = Bag.JProdutos_Array();
        }
        #endregion

        #region Métodos
        
        /// <summary>
        /// Carregamento inicial do formulário de Produtos
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void FrmProduto_Load(object sender, EventArgs e)
        {
            //Botão de Salvar, que no load do formulário, vem inicializado com visibilidade falsa
            btnExcluirProduto.Visible = false;
            string tipos = "";

            Bag.F_Tipos.Each((o)=>{
                if (o != null)
                {
                    tipos += ";" + o.Titulo;
                    return true;
                }
                return false;
            });
            cbPesquisarTipoProduto.DataSource = tipos.Split(';');
        }

        /// <summary>
        /// No clique do botão Pesquisar, o produto digitado no campo de texto é pesquisado e, se encontrado, o mesmo é carregado no DataGridView
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnPesquisarProdutos_Click(object sender, EventArgs e)
        {
            try
            {
                if (!String.IsNullOrEmpty(txtPesquisarProduto.Text))
                {
                    var produtos = Bag.J_Produtos.Find(true, "Nome", txtPesquisarProduto.Text);
                    dtPesquisarProdutos.DataSource = produtos.ToArray();
                }
                else if (!String.IsNullOrEmpty(cbPesquisarTipoProduto.Text))
                {
                    var produtos = Bag.J_Produtos.Find(true, "Tipo", cbPesquisarTipoProduto.Text);
                    dtPesquisarProdutos.DataSource = produtos.ToArray();
                }
                else
                {
                    MessageBox.Show("Digite um produto para ser pesquisado!");
                }
            }
            catch{
                MessageBox.Show("Produto não cadastrado!");
            }
        }

        /// <summary>
        /// No clique do botão Voltar, retorna para o Menu de Cardápio e fecha o formulário de Produtos
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnVoltarMenuCardapio_Click(object sender, EventArgs e)
        {
            this.Before.Show();
            this.Hide();
        }

        private void dtPesquisarProdutos_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {
            //Caso haja a seleção de uma das linhas do DataGridView de Produtos, o botão de excluir Tipos se torna visível
            if (dtPesquisarProdutos.SelectedRows.Count > 0)
            {
                btnExcluirProduto.Visible = true;
            }
        }

        /// <summary>
        /// No clique do link Sair, encerra a aplicação
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void linkSair_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
        {
            this.Before.Show();
            this.Hide();
        }

        /// <summary>
        /// No clique do link Voltar, retorna para o Menu de Cardápio e fecha o formulário de Produtos
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void linkVoltarMenuAtendimento_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
        {
            this.Before.Show();
            this.Hide();
        }

        private void dtPesquisarProdutos_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            lblSelecionaLinhaProduto.Visible = false;
            btnExcluirProduto.Visible = true;
        }

        private void btnExcluirProduto_Click(object sender, EventArgs e)
        {
            try
            {
                var row = dtPesquisarProdutos.SelectedCells[0].RowIndex;
                var index = dtPesquisarProdutos.Rows[row].Cells[0].Value.ToString();
                Bag.Cardapio.excluirProduto(Int32.Parse(index));
            }
            catch(Exception ex)
            {
                if (ex.Message == "Object reference not set to an instance of an object.")
                {
                    MessageBox.Show("Selecione uma produto para excluir");
                }else
                {
                    MessageBox.Show(ex.Message);
                }
                return;
            }
            dtPesquisarProdutos.DataSource = Bag.JProdutos_Array();
        }
        #endregion
    }
}
